package com.wenjie.plugin.util;

import android.content.Context;
import android.content.SharedPreferences;

/**
 * 安卓应用配置文件工具类
 */
public class ConfigurationUtil {

    private static ConfigurationUtil instance;
    private final SharedPreferences sharedPreferences;
    private final SharedPreferences.Editor editor;

    // 私有构造方法，防止外部实例化
    private ConfigurationUtil(Context context) {
        sharedPreferences = context.getApplicationContext().getSharedPreferences("wenjie_terminal", Context.MODE_PRIVATE);
        editor = sharedPreferences.edit();
    }

    // 提供全局访问点，使用双重校验锁实现单例模式
    public static ConfigurationUtil getInstance(Context context) {
        if (instance == null) {
            synchronized (ConfigurationUtil.class) {
                if (instance == null) {
                    instance = new ConfigurationUtil(context);
                }
            }
        }

        return instance;
    }

    // 保存 String 数据
    public void putString(String key, String value) {
        editor.putString(key, value).apply();
    }

    // 获取 String 数据
    public String getString(String key, String defaultValue) {
        return sharedPreferences.getString(key, defaultValue);
    }

    // 保存 int 数据
    public void putInt(String key, int value) {
        editor.putInt(key, value).apply();
    }

    // 获取 int 数据
    public int getInt(String key, int defaultValue) {
        return sharedPreferences.getInt(key, defaultValue);
    }

    // 保存 boolean 数据
    public void putBoolean(String key, boolean value) {
        editor.putBoolean(key, value).apply();
    }

    // 获取 boolean 数据
    public boolean getBoolean(String key, boolean defaultValue) {
        return sharedPreferences.getBoolean(key, defaultValue);
    }

    // 保存 long 数据
    public void putLong(String key, long value) {
        editor.putLong(key, value).apply();
    }

    // 获取 long 数据
    public long getLong(String key, long defaultValue) {
        return sharedPreferences.getLong(key, defaultValue);
    }

    // 保存 float 数据
    public void putFloat(String key, float value) {
        editor.putFloat(key, value).apply();
    }

    // 获取 float 数据
    public float getFloat(String key, float defaultValue) {
        return sharedPreferences.getFloat(key, defaultValue);
    }

    // 删除单个键
    public void remove(String key) {
        editor.remove(key).apply();
    }

    // 清除所有数据
    public void clear() {
        editor.clear().apply();
    }
}
